<?php


/**
* Класс работы с заявками.
*
* @author Владислав В. Костянецкий <bytecoded@gmail.com>
* @link   http://drfreddy.ru/akinoyume/
*/


class requests
{


  // ----------------- // МЕТОДЫ // ----------------- //      


  /**
  * Генерирует код заявки.
  *
  * @param   integer  $length  Длина кода.
  * @return  string   Сгенерированный код.
  *
  * @access public
  * @static  
  */    
  static public function make_code( $length = 8 )
  {
    $source = array( 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 );
    $code   = '';

    for ( $i = 0; $i < $length; $i++ )
    {
      $index = rand( 0, count( $source ) - 1 );
      $code .= $source[ $index ];
    }

    return $code;
  }
  

  /**
  * Устанавливает статус заявки.
  *
  * @param   integer  $id      ID заявки.
  * @param   string   $status  Новый статус.
  * @return  void
  *
  * @access public
  * @static  
  */    
  static public function set_status( $id, $status )
  {     
    app::$db->execute( 
      "UPDATE `requests` SET `status` = :status, `update_time` = UNIX_TIMESTAMP() WHERE `id` = :id",
      array( 'id' => $id, 'status' => $status )
    );
  
    // Если заявка принята, весь ее контент принят.

    if ( $status == 'approved' )
    {
      app::$db->execute( 
        "UPDATE `members` SET `status` = 'approved' WHERE `status` = 'pending' AND `request_id` = ?",
        array( $id )
      );      
    
      app::$db->execute( 
        "UPDATE `files` SET `status` = 'approved' WHERE `status` = 'pending' AND `request_id` = ?",
        array( $id )
      );
    }    
  }
  

  /**
  * Устанавливает время обновления заявки.
  *
  * @param   integer  $id  ID заявки.
  * @return  void
  *
  * @access public
  * @static  
  */      
  static public function mark_updated( $id )
  {
    app::$db->execute(
      "UPDATE `requests` SET `update_time` = UNIX_TIMESTAMP() WHERE `id` = ?",
      array( $id )
    );
  }


  /**
  * Устанавливает время комментирования заявки.
  *
  * @param   integer  $id  ID заявки.
  * @return  void
  *
  * @access public
  * @static  
  */        
  static public function mark_commented( $id )
  {
    app::$db->execute(
      "UPDATE `requests` SET `comment_time` = UNIX_TIMESTAMP() WHERE `id` = ?",
      array( $id )
    );
  }
     
     
} // Конец описания класса requests.